Este apéndice muestra la equivalencia entre algunas de las sentencias SQL no soportadas directamente por la herramienta con otras que sí lo están. No se pretende demostrar estos resultados sino ilustrar estas equivalencias mediante ejemplos y explicaciones informales. Algunos de los ejemplos son adaptaciones de los encontrados en el MySQL 5.0 Reference Manual \cite{MySQLmanual}

\begin{itemize}
\item \emph{Subconsultas en la cláusula \cod{FROM}:} Las subconsultas en la cláusula \cod{FROM} pueden reescribirse como vistas SQL, veamos el siguiente ejemplo, que puede generalizarse a otras situaciones:

considérese la tabla \cod{CREATE TABLE t1 (s1 INT, s2 INT, s3 INT);}\\

Es equivalente la consulta con subconsulta en la cláusula \cod{FROM}:

\cod{ SELECT sb1,sb2,sb3}\\
\cod{FROM (SELECT s1 AS sb1, s2 AS sb2, s3*2 AS sb3 FROM t1)}\\
\cod{AS sb WHERE sb1 > 1; }\\

y la siguiente creación de vista y consulta:


 \cod{CREATE VIEW sb AS} \\
\cod{SELECT s1 AS sb1, s2 AS sb2, s3*2 AS sb3 FROM t1;}\\
\cod{SELECT sb1,sb2,sb3 FROM sb;}\\

\item \emph{Subconsultas con \cod{ANY}:}

Las subconsultas con el operador \cod{ANY} son de la forma \cod{operando <operador de comparación> ANY (subconsulta)} y son \cod{true} si la comparación es cierta para cualquiera de los valores que devuelve la subconsulta.

Así, podemos establecer que es equivalente la consulta

\cod{SELECT s1 FROM t1 WHERE s1 op ANY (SELECT s2 FROM t2);} Donde \cod{op} es un operador de comparación.

y la consulta con subconsulta existencial

\cod{SELECT s1 FROM t1 WHERE EXISTS (SELECT s2 FROM t2 where s1 op s2)}

\item \emph{Subconsultas con \cod{IN}:}

El operador \cod{IN} es equivalente a \cod{= ANY} \cite{MySQLmanual} por lo que se puede aplicar la explicación anterior.

\item \emph{Subconsultas con \cod{ALL}: } 

Las consultas con el operador \cod{ALL} siguen la siguiente sintaxis: \cod{operando <operador de comparación> ANY (subconsulta)} y son \cod{true} cuando la comparación es cierta para todos los valores devueltos por la subconsulta, es decir, no existe un valor devuelto por la subconsulta para el cual la comparación sea falsa.

Con esta semántica podemos establecer que:

\cod{SELECT s1 FROM t1 WHERE s1 op ALL (SELECT s2 FROM t2);} Donde \cod{op} es un operador de comparación.

es equivalente a:

\cod{SELECT s1 FROM t1 WHERE NOT EXISTS (SELECT s2 FROM t2 WHERE s1 !op s2 );} Donde \cod{!op} es la negación del operador de comparación.

\item \emph{Consultas con \cod{NOT IN}:}

\cod{NOT IN} es una forma equivalente a \cod{<> ALL} por lo que el apartado anterior puede considerarse una forma general de afrontar este caso particular.

\end{itemize}